package de.unicornEntertainment.stundenplanapp.login;

import android.app.ProgressDialog;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;

import de.unicornEntertainment.stundenplanapp.R;
import de.unicornEntertainment.stundenplanapp.menu.MenuActivity;
import de.unicornEntertainment.stundenplanapp.threadTools.MyAsyncTask_Login;
import de.unicornEntertainment.stundenplanapp.util.MyTools;

public class ActivityLogin extends SherlockActivity implements OnPreparedListener {

	// Globale Deklaration
	private Button btn_gastlogin;
	private Button btn_login;
	private EditText et_benutzername;
	private EditText et_passwort;
	private ActivityLogin context = this;
	private Intent myIntent;
	private static MediaPlayer mp;
	private Menu optionsMenu;
	private String username = "";
	private String passwort = "";
	private static String klasse = "";
	private static String benutzertyp = "";
	private static String user = "";
	private static String pass = "";
	private ProgressDialog prg;
	
	
	/**
	 * Wird beim Start der Activity ausgeführt
	 */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        
        // Lokale Deklaration
        btn_gastlogin = (Button) findViewById(R.id.login_button_gastlogin);
        btn_gastlogin.setClickable(true);
        btn_login = (Button) findViewById(R.id.login_button_login);
        et_benutzername = (EditText) findViewById(R.id.login_feld_benutzername);
        et_passwort = (EditText) findViewById(R.id.login_feld_passwort);
        
        // Bei Klick auf "Als Gast einloggen"
        btn_gastlogin.setOnClickListener(new OnClickListener() {
			
        	// Klickfunktionalität definieren
			@Override
			public void onClick(View v) {
				myIntent = new Intent(context, MenuActivity.class);
				myIntent.putExtra("typ", 0); // Gibt den Benutzertyp mit (0 = Gast, 1 = Schüler, 2 = Lehrer)
				startActivity(myIntent);
			}
		});
        
        
        // Bei Klick auf den Button "Login"
        btn_login.setOnClickListener(new OnClickListener() {
			
        	// Klickfunktionalität definieren
			@Override
			public void onClick(View v) {
				myIntent = new Intent(context, MenuActivity.class);
				
				// Prüfe auf vorhandene Internetverbindung
				if (new MyTools(getApplicationContext()).isInternetVerfuegbar()) {
					try {
						user = et_benutzername.getText().toString();
						pass = et_passwort.getText().toString();
						
						// Wenn Eingabefelder gefüllt, Verarbeitung starten
						if (!user.equals("") && !pass.equals("")) {
							// Dialog zeigen
							prg = ProgressDialog.show(context, "Bitte warten...", "Nutzerdaten werden geprüft...");
							
							// Userdaten überprüfen
							new MyAsyncTask_Login(context).execute();
							
						} // Wenn Eingabefelder leer, Verarbeitung nicht starten und User benachrichtigen
						else {
							Toast.makeText(context, "Die Eingabefelder dürfen nicht leer sein!", Toast.LENGTH_LONG).show();
						}
					}
					catch(Exception e) {
						e.printStackTrace();
						prg.dismiss();
					}
				} // Wenn keine Internetverbindung vorhanden und die Eingabefelder leer sind,
				//entsprechende Meldung an den Nutzer ausgeben
				else if (!new MyTools(getApplicationContext()).isInternetVerfuegbar() && user.equals("") && pass.equals("") ) {
					Toast.makeText(context, "Keine Internetverbindung vorhanden und Eingabefelder leer," +
							" bitte Internetverbindung herstellen und Anmeldedaten eintragen!", Toast.LENGTH_LONG).show();
				} // Ende prüfe Internetverbindung
				else if (!new MyTools(getApplicationContext()).isInternetVerfuegbar()) {
					Toast.makeText(context, "Keine Internetverbindung vorhanden!", Toast.LENGTH_LONG).show();
				}
			}
		});
        
//        try {
//        	mp = new MediaPlayer(); //.create(context, R.raw.pfudor10min);
//        	mp.setDataSource("file:///android_asset/pfudor10min.mp3");
//        	mp.setOnPreparedListener(this);
//        	mp.prepareAsync();
////        	mp.start();
//		} catch (Exception e) {
//			// TODO: handle exception
//			e.printStackTrace();
//		}
    }
    
	/**
	 * Erzeugt beim Start der Activity das dazugehörige Menü
	 */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		optionsMenu = menu;
		new MenuInflater(this).inflate(R.menu.activity_login, menu);
		return super.onCreateOptionsMenu(menu);
	}
	
	/**
	 * Wertet das Optionenmenü aus
	 */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		int menuId = item.getItemId();
		
		switch (menuId) {
		case R.id.login_menu_playSoundItem:	//mp.start();
			break;
		case R.id.login_menu_stopSoundItem: //if (mp.isPlaying()) {	mp.stop(); } 
			break;

		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	// Getter und Setter
	public static MediaPlayer getMp() {
		return mp;
	}

	public static void setMp(MediaPlayer mp) {
		ActivityLogin.mp = mp;
	}

	public Menu getOptionsMenu() {
		return optionsMenu;
	}

	public void setOptionsMenu(Menu optionsMenu) {
		this.optionsMenu = optionsMenu;
	}

	public static String getUser() {
		return user;
	}

	public static void setUser(String user) {
		ActivityLogin.user = user;
	}

	public static String getPass() {
		return pass;
	}
	
	public static void setPass(String pass) {
		ActivityLogin.pass = pass;
	}

	public Intent getMyIntent() {
		return myIntent;
	}

	public void setMyIntent(Intent myIntent) {
		this.myIntent = myIntent;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPasswort() {
		return passwort;
	}

	public void setPasswort(String passwort) {
		this.passwort = passwort;
	}

	public ProgressDialog getPrg() {
		return prg;
	}

	public void setPrg(ProgressDialog prg) {
		this.prg = prg;
	}


	public Button getBtn_gastlogin() {
		return btn_gastlogin;
	}

	public void setBtn_gastlogin(Button btn_gastlogin) {
		this.btn_gastlogin = btn_gastlogin;
	}

	public Button getBtn_login() {
		return btn_login;
	}

	public void setBtn_login(Button btn_login) {
		this.btn_login = btn_login;
	}

	public EditText getEt_benutzername() {
		return et_benutzername;
	}

	public void setEt_benutzername(EditText et_benutzername) {
		this.et_benutzername = et_benutzername;
	}

	public EditText getEt_passwort() {
		return et_passwort;
	}

	public void setEt_passwort(EditText et_passwort) {
		this.et_passwort = et_passwort;
	}

	public ActivityLogin getContext() {
		return context;
	}

	public void setContext(ActivityLogin context) {
		this.context = context;
	}

	public static String getKlasse() {
		return klasse;
	}

	public static void setKlasse(String klasse) {
		ActivityLogin.klasse = klasse;
	}

	public static String getBenutzertyp() {
		return benutzertyp;
	}

	public static void setBenutzertyp(String benutzertyp) {
		ActivityLogin.benutzertyp = benutzertyp;
	}

	/**
	 * Wenn Activity pausiert wird
	 */
	@Override
	protected void onPause() {
//		mp.release();
		super.onPause();
	}
	
	/**
	 * Wenn Activity wieder im Fokus liegt
	 */
	@Override
	protected void onResume() {
		super.onResume();

		// Anmeldefelder leeren
		et_benutzername.setText("");
		et_passwort.setText("");
		
		
//		// Prüfen ob Sound erlaubt
//		if (optionsMenu.getItem(R.id.login_menu_playSoundItem).isChecked()) {
////			new MediaPlayer();
////			mp = MediaPlayer.create(context, R.raw.pfudor10min);
////			mp.start();
//		}
//		else {
//		}
	}

	@Override
	public void onPrepared(MediaPlayer player) {
//				player.start();
	}
}
